package com.david.mydemo.util;

import com.alibaba.fastjson.JSONObject;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * RestTemplateUtil
 */
public class RestTemplateUtil {

    /**
     * restTemplate.postForEntity() 方法的封装
     *
     * @param restTemplate 实例
     * @param url          请求服务url
     * @param jsonParam    参数
     * @param clz          类型
     * @param <T>
     * @return
     */
    public static <T> T postForEntity(RestTemplate restTemplate, String url, JSONObject jsonParam, Class<T> clz) {
        // RestTemplate发起HTTP请求参数设置启用 Begin
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        headers.add("token", jsonParam.getString("token"));
        headers.add("Authorization", jsonParam.getString("Authorization"));
        // 调用file文件服务生成、并存储文件
        Object uploadFileResult = restTemplate.postForEntity(url, new HttpEntity<JSONObject>(jsonParam, headers), clz).getBody();

        return (T) uploadFileResult;
    }

}
